package leetcode.code0170;

import java.util.HashMap;
import java.util.Map;

//设计一个接收整数流的数据结构，该数据结构支持检查是否存在两数之和等于特定值。
//
//实现 TwoSum 类：
//
//TwoSum() 使用空数组初始化 TwoSum 对象
//void add(int number) 向数据结构添加一个数 number
//boolean find(int value) 寻找数据结构中是否存在一对整数，使得两数之和与给定的值相等。如果存在，返回 true ；否则，返回 false 。

public class TwoSum {

	int[] nums;
	Map<Integer, Integer> map;
	int p;

	public TwoSum() {
		nums = new int[(int) 1e4];
		map = new HashMap<>();
		p = 0;
	}

	public void add(int number) {
		nums[p++] = number;
		map.put(number, map.getOrDefault(number, 0) + 1);
	}

	public boolean find(int value) {
		for (int i = 0; i < p; i++) {
			int diff = value - nums[i];
			if ((diff != nums[i] && map.containsKey(diff))
					|| (diff == nums[i] && map.containsKey(diff) && map.get(diff) > 1))
				return true;
		}
		return false;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}
